/*
    定义日志消息类,进行日志中间信息的存储
    1.日志的输出时间    用于日志输出时间
    2.日志等级     用于进行日志过滤分析
    3.源文件名称
    4.源代码行号    3 4 用于定位出现错误的代码位置
    5.线程ID   用于过滤出现的线程
    6.日志的消息主体
    7.日志器名称    同步日志器和异步日志器
*/
#pragma once
#include <iostream>
#include <string>
#include <thread>
#include "level.hpp"
#include "util.hpp"

namespace bitlog
{
    struct LogMsg
    {
        time_t _ctime; // 时间
        LogLevel::value _level;  // 日志等级
        size_t _line;  // 文件的行号
        std::thread::id _tid;  // 线程ID
        std::string _file;  // 文件名称
        std::string _logger; // 日志器名称
        std::string _payload; // 消息主体

        LogMsg(LogLevel::value level, size_t line, const std::string file, std::string logger, std::string msg)
            :_ctime(util::Date::now())
            ,_level(level)
            ,_line(line)
            ,_tid(std::this_thread::get_id())
            ,_file(file)
            ,_logger(logger)
            ,_payload(msg)
        {}
    };
}
